﻿namespace TaskKernel.Domain
{
    public class Permissions
    {

        public Permissions()
        {
            Priority = false;
            Executors = false;
            Close = false;
            Save = false;
            Expiration = false;
            Complete = false;
            ForceClose = false;
            Delete = false;
            Department = false;
            UnClose = false;
            System = false;
        }
        public bool System { get; protected set; }
        public bool Priority { get; protected set; }
        public bool Executors { get; protected set; }
        public bool Close { get; protected set; }
        public bool UnClose { get; protected set; }
        public bool Save { get; protected set; }
        public bool Expiration { get; protected set; }
        public bool Complete { get; protected set; }
        public bool ForceClose { get; protected set; }
        public bool Delete { get; protected set; }
        public bool Department { get; protected set; }
    }

    public class PermissionsExecutorUnclosedTaskEditPage : Permissions
    {
        public PermissionsExecutorUnclosedTaskEditPage()
        {
            Close = true;
            Complete = true;
            Executors = true;
            Expiration = true;
            Priority = true;
            Save = true;
            Department = true;
            System = true;

        }
    }

    public class PermissionsAdminUnclosedTaskEditPage : Permissions
    {
        public PermissionsAdminUnclosedTaskEditPage()
        {
            Close = true;
            Complete = true;
            Executors = true;
            Expiration = true;
            ForceClose = true;
            Priority = true;
            Save = true;
            Department = true;
            System = true;
        }
    }

    public class PermissionsAdminClosedTaskEditPage : Permissions
    {
        public PermissionsAdminClosedTaskEditPage()
        {
            Delete = true;
            UnClose = true;
            System = true;
        }
    }

    public class PermissionsOtherCreatePage : Permissions
    {
        public PermissionsOtherCreatePage()
        {
            Expiration = true;
            Save = true;
        }
    }

    public class PermissionsAdminExecutorCreatePage : Permissions
    {
        public PermissionsAdminExecutorCreatePage()
        {
            Executors = true;
            Expiration = true;
            Priority = true;
            Save = true;
        }
    }

    public class PermissionsParticipantUnclosedTaskEditPage : Permissions
    {
        public PermissionsParticipantUnclosedTaskEditPage()
        {
            Save = true;
            System = true;
        }
    }

    public class PermissionsOwnerUnclosedTaskEditPage : Permissions
    {
        public PermissionsOwnerUnclosedTaskEditPage()
        {
            Close = true;
            Expiration = true;
            Save = true;
            Department = true;
            System = true;
        }
    }

    public class PermissionsOwnerClosedTaskEditPage : Permissions
    {
        public PermissionsOwnerClosedTaskEditPage()
        {
            UnClose = true;
            System = true;
        }
    }
}